package com.xuetang.service;

import com.xuetang.entity.SysUser;
import com.xuetang.security.LoginUser;

import java.util.Map;

/**
 * 用户服务接口
 */
public interface SysUserService {

    /**
     * 根据用户名查询用户
     * 
     * @param username 用户名
     * @return 用户对象
     */
    SysUser getUserByUsername(String username);

    /**
     * 根据openid查询用户
     * 
     * @param openid 微信openid
     * @return 用户对象
     */
    SysUser getUserByOpenid(String openid);

    /**
     * 微信小程序登录
     * 
     * @param code     微信授权code
     * @param userInfo 用户信息
     * @return 登录结果，包含token和用户信息
     */
    Map<String, Object> wxLogin(String code, Map<String, Object> userInfo);

    /**
     * 用户名密码登录
     * 
     * @param username 用户名
     * @param password 密码
     * @return 登录结果，包含token
     */
    String login(String username, String password);

    /**
     * 注册用户
     * 
     * @param user 用户信息
     * @return 是否成功
     */
    boolean register(SysUser user);

    /**
     * 更新用户信息
     * 
     * @param user 用户信息
     * @return 是否成功
     */
    boolean updateUserInfo(SysUser user);

    /**
     * 获取当前登录用户信息
     * 
     * @return 用户信息
     */
    LoginUser getCurrentUser();

    /**
     * 保存用户
     * 
     * @param user 用户对象
     * @return 是否成功
     */
    boolean save(SysUser user);

    /**
     * 根据ID查询用户
     * 
     * @param id 用户ID
     * @return 用户对象
     */
    SysUser getById(Long id);
}